package org.example.homework;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.*;

public class TestHome {
    private static HashMap allUser = new HashMap();


    /**
     * 读取Properties文件（user.data），把数据封装到一个
     * HashMap<String,UserBean>当中，然后返回。
     *
     * @return Map集合对象
     */
    public static HashMap<String, UserBean> readFile() {
        /**
         * User对象
         */
        UserBean user;

        /**
         * Map集合对象
         */
        HashMap<String, UserBean> userBeanMap = new HashMap<>();

        /**
         * 读取文件
         */
        Properties properties = new Properties();
        try {
            properties.load(new FileInputStream("/Users/cengyunke/Desktop/atm1/HashMapWork/src/main/resources/user.data"));
        } catch (IOException e) {
            throw new RuntimeException(e);
        }

        /**
         * 遍历properties文件中所有的Key
         */
        Set keySet = properties.keySet();
        for (Object a : keySet
        ) {

            /**
             * 通过遍历的Key在properties文件中获取Value，并将Value按照"-"进行拆分
             * 将拆分后的字符串放入list集合中
             */
            String[] str = (properties.getProperty(a.toString()).split("-"));
            /**
             * 通过list集合中的字符串作为User的属性
             * 调用User的带参构造构建User对象
             */
            user = new UserBean(str[0], str[1], Double.parseDouble(str[2]));
            /**
             * 将遍历的Key值作为Map的Key
             * 将构建好的User对象作为Map的Value
             * 放入Map集合中
             */
            allUser.put(a.toString(), user);
        }
        return allUser;
    }


    /**
     * 把传入的allUsers对象中的数据写入到Properties文件中去，
     * 要求格式保持不变
     *
     * @param allUsers Map集合
     */
    public static void writeFile(HashMap<String, UserBean> allUsers) {
        Properties properties = new Properties();
        UserBean userBean;
        /**
         * 获取allUser的Map集合
         * 并且遍历Map集合中所有的对象
         */
        for (Map.Entry<String, UserBean> userBeanEntry : allUsers.entrySet()
        /**
         * 每遍历一次Map集合，就将Map集合中的对象转为字符串保存为Properties文件
         */
        ) {
            properties.setProperty(userBeanEntry.getKey(), userBeanEntry.getValue().toString());
            try {
                properties.store(new FileOutputStream("/Users/cengyunke/Desktop/atm1/HashMapWork/src/main/resources/user2.data"), "");
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        }
    }

    public static void main(String[] args) {
        /**
         * 测试
         */
        readFile();
        writeFile(allUser);
    }
}
